package com.netdisk.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.netdisk.dto.FileDTO;
import com.netdisk.dto.ShareDTO;
import com.netdisk.entity.Share;
import com.netdisk.vo.PageResult;

/**
 * 分享服务接口
 */
public interface ShareService extends IService<Share> {

    /**
     * 创建分享
     *
     * @param fileId 文件ID
     * @param userId 用户ID
     * @return 分享DTO
     */
    ShareDTO createShare(Integer fileId, Integer userId);

    /**
     * 获取分享信息
     *
     * @param shareId 分享ID
     * @return 分享DTO
     */
    ShareDTO getShareInfo(String shareId);

    /**
     * 取消分享
     *
     * @param shareId 分享ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean cancelShare(String shareId, Integer userId);

    /**
     * 获取用户分享列表
     *
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页大小
     * @return 分页结果
     */
    PageResult<ShareDTO> listUserShares(Integer userId, Integer page, Integer pageSize);
    
    /**
     * 获取用户分享列表（带模糊查询）
     *
     * @param userId 用户ID
     * @param page 页码
     * @param pageSize 每页大小
     * @param query 查询关键词
     * @return 分页结果
     */
    PageResult<ShareDTO> listUserShares(Integer userId, Integer page, Integer pageSize, String query);

    /**
     * 获取分享文件信息
     *
     * @param shareId 分享唯一标识
     * @return 文件信息
     */
    FileDTO getShareFileInfo(String shareId);
}